{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "#创建一个序列 \n",
    "s=pd.Series([1,2,np.nan,3,4])\n",
    "print(s)\n",
    "\n",
    "#创建一个时间序列\n",
    "dates=pd.date_range('20240801',periods=6)\n",
    "print(dates)\n",
    "\n",
    "#创建一个索引为时间的数据 index=(行索引),columns=(列索引)，不设置默认为数字索引\n",
    "df=pd.DataFrame(np.random.randn(6,4),index=dates,columns=(['a','b','c','d']))\n",
    "print(df)\n",
    "\n",
    "#以字典的形式定义\n",
    "df = pd.DataFrame({'A':1.,\n",
    "                    'B' : pd.Timestamp('20130102'),\n",
    "                    'C' : pd.Series(1,index=list(range(4))),\n",
    "                    'D' : np.array([3]* 4,dtype='int32'),\n",
    "                    'E' : pd.Categorical([\"test\",\"train\",\"test\", \"train\"]),\n",
    "                    'F' : 'fool'\n",
    "                    })\n",
    "print(df)\n",
    "\n",
    "#数据类型 行索引 列索引 \n",
    "print(df.dtypes)\n",
    "print(df.index)\n",
    "print(df.columns)\n",
    "\n",
    "#打印每一行的值\n",
    "print(df.values)\n",
    "\n",
    "#打印数字类型的相关信息 count mean std\n",
    "print(df.describe())\n",
    "\n",
    "#转置  \n",
    "print(df.T)\n",
    "\n",
    "#根据索引排序 axis=维度 0行一列，ascending=升序/降序 \n",
    "print(df.sort_index(axis=1,ascending=False))\n",
    "\n",
    "#根据值排序  by=需要排序的列\n",
    "print(df.sort_values(by='E'))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "dates=pd.date_range('20240801',periods=6)\n",
    "df=pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=(['A','B','C','D']))\n",
    "\n",
    "#选择列 \n",
    "print(df.A,\"\\n\\n\",df['A'])\n",
    "#选择行  \n",
    "print(df[0:3],\"\\n\\n\",df['20240801':'20240805'])\n",
    "#根据标签名选择 loc\n",
    "print(df.loc['20240803':,['A','C']])\n",
    "#根据位置索引选择 iloc\n",
    "print(df.iloc[2:4,0:1])\n",
    "#混合选择  ix被弃用 \n",
    "#print(df.ix[2:4,['A','C']])\n",
    "#条件筛选 bool\n",
    "print(df[df.A>8])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "dates=pd.date_range('20240801',periods=6)\n",
    "df=pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=(['A','B','C','D']))\n",
    "\n",
    "df.iloc[0,2]=1111\n",
    "print(df)\n",
    "df.loc['20240803','B']=2222\n",
    "print(df)\n",
    "df.A[df.A>4]=3333\n",
    "print(df)\n",
    "#添加一列\n",
    "df['E']=np.nan\n",
    "print(df)\n",
    "df['F']=pd.Series(np.arange(6),index=dates)\n",
    "print(df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "dates=pd.date_range('20240801',periods=6)\n",
    "df=pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=(['A','B','C','D']))\n",
    "\n",
    "df.iloc[0,2]=np.nan\n",
    "df.iloc[1,3]=np.nan\n",
    "\n",
    "#丢掉空值 axis=0/1,丢掉行/l=列 how=any/all\n",
    "print(df.dropna(axis=1,how='any'))\n",
    "#填补空值\n",
    "print(df.fillna(0))\n",
    "#判断是否有空值\n",
    "print(df.isnull())\n",
    "print(np.any(df.isnull()==True))#True说明存在空值\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     a    b    c    d\n",
      "0  0.0  0.0  0.0  0.0\n",
      "1  0.0  0.0  0.0  0.0\n",
      "2  0.0  0.0  0.0  0.0\n",
      "3  1.0  1.0  1.0  1.0\n",
      "4  1.0  1.0  1.0  1.0\n",
      "5  1.0  1.0  1.0  1.0\n",
      "6  2.0  2.0  2.0  2.0\n",
      "7  2.0  2.0  2.0  2.0\n",
      "8  2.0  2.0  2.0  2.0\n",
      "     a    b    c    d\n",
      "0  0.0  0.0  0.0  0.0\n",
      "1  0.0  0.0  0.0  0.0\n",
      "2  0.0  0.0  0.0  0.0\n",
      "3  1.0  1.0  1.0  1.0\n",
      "4  1.0  1.0  1.0  1.0\n",
      "5  1.0  1.0  1.0  1.0\n",
      "     a    b    c    d    e\n",
      "0  0.0  0.0  0.0  0.0  NaN\n",
      "1  0.0  0.0  0.0  0.0  NaN\n",
      "2  0.0  0.0  0.0  0.0  NaN\n",
      "0  1.0  1.0  1.0  1.0  NaN\n",
      "1  1.0  1.0  1.0  1.0  NaN\n",
      "2  1.0  1.0  1.0  1.0  NaN\n",
      "2  NaN  2.0  2.0  2.0  2.0\n",
      "3  NaN  2.0  2.0  2.0  2.0\n",
      "4  NaN  2.0  2.0  2.0  2.0\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "\n",
    "# concatenating\n",
    "# ignore index\n",
    "df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a','b','c','d'])\n",
    "df2 = pd.DataFrame(np.ones((3,4))*1, columns=['a','b','c','d'])\n",
    "df3 = pd.DataFrame(np.ones((3,4))*2, columns=['a','b','c','d'])\n",
    "#concat拼接  axis=0,上下拼接，行数会增加，列数不变 ignore_index=True,不保留原来的行索引\n",
    "res = pd.concat([df1, df2, df3], axis=0, ignore_index=True)\n",
    "print(res)\n",
    "\n",
    "\n",
    "\n",
    "# join, ('inner', 'outer')，inner保留两者都有的部分，即交集；outer即并集\n",
    "df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a','b','c','d'], index=[1,2,3])\n",
    "df2 = pd.DataFrame(np.ones((3,4))*1, columns=['b','c','d', 'e'], index=[2,3,4])\n",
    "res = pd.concat([df1, df2], axis=0, join='outer')\n",
    "#print(res)\n",
    "res = pd.concat([df1, df2], axis=0, join='inner')\n",
    "#print(res)\n",
    "\n",
    "\n",
    "# # join_axes删了\n",
    "# res = pd.concat([df1, df2], axis=1, join_axes=[df1.index])\n",
    "\n",
    "# append\n",
    "df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a','b','c','d'])\n",
    "df2 = pd.DataFrame(np.ones((3,4))*1, columns=['a','b','c','d'])\n",
    "df3 = pd.DataFrame(np.ones((3,4))*2, columns=['b','c','d', 'e'], index=[2,3,4])\n",
    "#默认\n",
    "res = df1.append(df2, ignore_index=True)\n",
    "print(res)\n",
    "res = df1.append([df2, df3])\n",
    "print(res)\n",
    "#添加单独的一行\n",
    "s1 = pd.Series([1,2,3,4], index=['a','b','c','d'])\n",
    "res = df1.append(s1, ignore_index=True)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  key   A   B   C   D\n",
      "0  K0  A0  B0  C0  D0\n",
      "1  K1  A1  B1  C1  D1\n",
      "2  K2  A2  B2  C2  D2\n",
      "3  K3  A3  B3  C3  D3\n",
      "  key1 key2   A   B   C   D\n",
      "0   K0   K0  A0  B0  C0  D0\n",
      "1   K1   K0  A2  B2  C1  D1\n",
      "2   K1   K0  A2  B2  C2  D2\n",
      "      A    B    C    D\n",
      "K0   A0   B0   C0   D0\n",
      "K1   A1   B1  NaN  NaN\n",
      "K2   A2   B2   C2   D2\n",
      "K3  NaN  NaN   C3   D3\n",
      "     A   B   C   D\n",
      "K0  A0  B0  C0  D0\n",
      "K2  A2  B2  C2  D2\n",
      "    k  age_x  age_y\n",
      "0  K0      1      4\n",
      "1  K0      1      5\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "# merging two df by key/keys. (may be used in database)\n",
    "# simple example\n",
    "left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],\n",
    "                                  'A': ['A0', 'A1', 'A2', 'A3'],\n",
    "                                  'B': ['B0', 'B1', 'B2', 'B3']})\n",
    "right = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],\n",
    "                                    'C': ['C0', 'C1', 'C2', 'C3'],\n",
    "                                    'D': ['D0', 'D1', 'D2', 'D3']})\n",
    "# print(left)\n",
    "# print(right)\n",
    "\n",
    "#基于哪个索引进行合并\n",
    "res = pd.merge(left, right, on='key')\n",
    "print(res)\n",
    "\n",
    "# consider two keys，可以设置多个索引\n",
    "left = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],\n",
    "                             'key2': ['K0', 'K1', 'K0', 'K1'],\n",
    "                             'A': ['A0', 'A1', 'A2', 'A3'],\n",
    "                             'B': ['B0', 'B1', 'B2', 'B3']})\n",
    "right = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],\n",
    "                              'key2': ['K0', 'K0', 'K0', 'K0'],\n",
    "                              'C': ['C0', 'C1', 'C2', 'C3'],\n",
    "                              'D': ['D0', 'D1', 'D2', 'D3']})\n",
    "# print(left)\n",
    "# print(right)\n",
    "\n",
    "\n",
    "#保留key1列和key2列元素均相同的行\n",
    "res = pd.merge(left, right, on=['key1', 'key2'], how='inner')  # default for how='inner'\n",
    "print(res)\n",
    "\n",
    "\n",
    "# how = ['left', 'right', 'outer', 'inner']\n",
    "# left左连接 和左边索引对应值比较，包含则显示CD值，不包含则key1和key2使用left的值，对应CD的值设为NAN\n",
    "res = pd.merge(left, right, on=['key1', 'key2'], how='left')\n",
    "#print(res)\n",
    "\n",
    "# indicator可以显示当前行是什么合并形式left_join……\n",
    "df1 = pd.DataFrame({'col1':[0,1], 'col_left':['a','b']})\n",
    "df2 = pd.DataFrame({'col1':[1,2,2],'col_right':[2,2,2]})\n",
    "\n",
    "# print(df1)\n",
    "# print(df2)\n",
    "res = pd.merge(df1, df2, on='col1', how='outer', indicator=True)\n",
    "# give the indicator a custom name\n",
    "res = pd.merge(df1, df2, on='col1', how='outer', indicator='indicator_column')\n",
    "\n",
    "\n",
    "# 根据行的索引进行合并，即左右合并\n",
    "left = pd.DataFrame({'A': ['A0', 'A1', 'A2'],\n",
    "                                  'B': ['B0', 'B1', 'B2']},\n",
    "                                  index=['K0', 'K1', 'K2'])\n",
    "right = pd.DataFrame({'C': ['C0', 'C2', 'C3'],\n",
    "                                     'D': ['D0', 'D2', 'D3']},\n",
    "                                      index=['K0', 'K2', 'K3'])\n",
    "# print(left)\n",
    "# print(right)\n",
    "# left_index and right_index\n",
    "res = pd.merge(left, right, left_index=True, right_index=True, how='outer')\n",
    "print(res)\n",
    "res = pd.merge(left, right, left_index=True, right_index=True, how='inner')\n",
    "print(res)\n",
    "\n",
    "# suffixes添加后缀,若其他索引名称一致可以添加后缀区分,设置的话会自动添加_x\n",
    "boys = pd.DataFrame({'k': ['K0', 'K1', 'K2'], 'age': [1, 2, 3]})\n",
    "girls = pd.DataFrame({'k': ['K0', 'K0', 'K3'], 'age': [4, 5, 6]})\n",
    "res = pd.merge(boys, girls, on='k', suffixes=['_boy', '_girl'], how='inner')\n",
    "print(res)\n",
    "\n",
    "# join function in pandas is similar with merge. If know merge, you will understand join"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# plot data\n",
    "\n",
    "# Series\n",
    "data = pd.Series(np.random.randn(1000), index=np.arange(1000))\n",
    "data = data.cumsum()\n",
    "##data.plot()\n",
    "\n",
    "# DataFrame\n",
    "data = pd.DataFrame(np.random.randn(1000, 4), index=np.arange(1000), columns=list(\"ABCD\"))\n",
    "data = data.cumsum()\n",
    "# plot methods:\n",
    "# 'bar', 'hist', 'box', 'kde', 'area', scatter', hexbin', 'pie'\n",
    "\n",
    "#plot不指定可以绘制所有行索引列索引的图；scatter可以设置x，y;ax=可以将图放到一张图上\n",
    "ax = data.plot.scatter(x='A', y='B', color='DarkBlue', label=\"Class 1\")\n",
    "bx = data.plot.scatter(x='A', y='D', color='Red', label=\"Class 3\",ax=ax)\n",
    "data.plot.scatter(x='A', y='C', color='LightGreen', label='Class 2', ax=bx)\n",
    "\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "pytorch",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
